Distributed event processing systems often require input streams that are ordered in some predetermined manner or that events arrive within a fixed time interval. This order may simply be arrival order or given explicitly on a specific event attribute, such as a timestamp or sequence number. Standing event queries, such as a temporal correlation of events across multiple streams, often block if an input stream is slow or may produce an incorrect answer if events fail to arrive within the fixed time interval.
Monitoring of distributed systems presents a unique challenge because the events of interest take place in many different places and are most often observed with at least some latency. Deeply networked environments can be highly volatile due to the number of communication links and disparate systems involved, as well as temporary disconnections, packet-loss and retransmission. Consequently, the time at which an event reaches an observer may be only loosely related to the time it actually occurred. Moreover, this latency can vary during monitoring. Most often, it is not practical (or economically feasible) to assign a globally consistent timestamp to each event which records the moment it occurred, because this would require perfectly synchronized clocks.
As stated above, monitoring of distributed systems presents a unique challenge because the events of interest occur in many different places and are most often observed with some latency. Of course, the latency depends on random factors such as connection bandwidth, routing paths, temporary disconnections, packet-loss and retransmission, etc. Therefore, the times at which the events reach some observer are only loosely related to the times at which they actually occurred. In the worst case the events might be observed in different order than their occurrence. On the other hand, because synchronization of distributed physical clocks is impracticable, it is not always possible to assign consistent timestamps to the events at the moment of occurrence.